package service

import (
	"fmt"
	"path"
	"runtime"
	"strings"

	"gitee.com/night-tc/gobige/common"
	"gitee.com/night-tc/gobige/global"
	"gitee.com/night-tc/gobige/logger"
	"gitee.com/night-tc/gobige/threads"
	"gitee.com/zhenghexcs/flags"
)

/*
服务器基础包
每个启动的服务基本都是在他的基础上扩展
*/

func init() {
	flags.SetFlag(common.ServerJson, strings.ToUpper(common.ServerJson), "服务器配置文件路径，相对与bin目录", path.Join(common.GetResPath(), "config", "server.json"))
	flags.SetFlag(common.ServerNumber, strings.ToUpper(common.ServerNumber), "服务器编号", "0")
	flags.SetFlag(common.DockerIP, strings.ToUpper(common.DockerIP), "参数传递本机IP,会替换相互访问的IP", "")
	flags.SetFlag(common.DockerPost, strings.ToUpper(common.DockerPost), "参数传递对外端口,会替换ETCD中的对外端口", "0")
	common.GlobalRandInit()

	threads.SetUtilLog(func(err interface{}) {

		buf := common.StackTrace()
		common.OnRecover(err, buf, nil)

		if !global.GetCfgInst().GetRecover() {
			panic(fmt.Sprintf("Log: %s", buf))
		} else {
			logger.Error("Log:", err)
		}
	})
}

func SetTitle(title string) {
	if runtime.GOOS == "windows" {
		// 使用 ANSI 转义序列修改终端标题
		fmt.Printf("\033]0;%s\007", title) // 通用格式
	}
}
